package tech.dx.springdb.service;

import org.springframework.data.domain.Page;
import tech.dx.springdb.entity.User;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Optional;


public interface UserService {
    /**
     * 获得所有用户
     * @return 用户实例集合
     */
    List<User> getUserList();

    /**
     * 通过邮箱获取用户
     * @param email 邮箱  唯一
     * @return  用户实例
     */
    Optional<User> getUserByEmail(@NotEmpty @Email String email);

    /**
     * 添加用户
     * @param user  前台过来的对象
     * @return  返回对象实例
     */
    User addUser( @NotEmpty User user);

    /**
     * 更新用户信息
     * @param user 前台过来的对象
     * @return  返回更新后的对象
     */
    User updateUserById(@NotEmpty User user);

    /**
     * 删除用户信息  逻辑删除
     * @param Id 用户id
     */
    void deleteUserById(int Id);

    /**
     * 获取每页用户信息
     * @param page 页码
     * @param pageCount  每页数量
     * @return  用户集合
     */
    Page<User> getPageUserList(int page,int pageCount);

    Optional<User> getById(long id);
}
